﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using K.EnterpriseLibary;
namespace K.ClientPublic
{
    /// <summary>
    /// 服务工厂，为客户端创建远程对象提供帮助
    /// 通过泛型创建各类服务的实例
    /// </summary>
    public class ServiceFactory<T>
    {
        //定义泛型委托类型的字段
        private ServiceFactoryDelegate<T> _Service;
        
        //定义泛型委托类型的属性
        public T Service
        {
            get 
            {
                //先判断_Service是否为空 
                _Service.CheckNull(); ;//K-Doubtful 具体有什么用呢？
                return _Service();
            }
        }

        /// <summary>
        /// 传入返回为T类型的方法，以得到T类型的方法。从而使实例中的泛型委托属性实例化
        /// </summary>
        /// <param name="factory"></param>
        public void Initialize(ServiceFactoryDelegate<T> factory)
        {
            _Service = factory;
        }   


    }
}
